package com.example.educational.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.educational.entity.User;

import java.util.ArrayList;

/**
 * @author MySoul
 * @description 针对表【edu_user】的数据库操作Service
 * @createDate 2023-05-18 17:23:18
 */
public interface UserService extends IService<User> {
    /**
     * @param userId 用户编号
     * @param taskId 任务ID
     * @return 记录结果
     */
    Boolean recordReadUser(String userId, String taskId);

    /**
     * 根据通讯录回调信息，同步创建用户
     *
     * @param accessToken 需要企业内部应用的自建Id
     * @param userId      用户编号
     * @return 创建结果
     */
    Boolean createUser(String accessToken, String userId);

    /**
     * @param userId 用户编号
     * @return 用户信息
     */
    User checkUserIdentify(String userId);

    /**
     * 将用户的姓名转换为ID
     *
     * @param userNameList 用户姓名列表
     * @return 用户ID列表
     */
    ArrayList<String> changeIdFromName(String userNameList);

    /**
     * 获取已读用户人员
     *
     * @param taskId 任务Id
     * @param name   姓名
     * @return 已读用户列表
     */
    ArrayList<User> getUsersRead(String taskId, String name);

    /**
     * 获取未读用户人员
     *
     * @param taskId 任务Id
     * @param name   姓名
     * @return 未读用户列表
     */
    ArrayList<User> getUsersUnRead(String taskId, String name);

    /**
     * @param userId
     * @return
     */
    Boolean deleteUser(String userId);

    /**
     * @param accessToken 需要企业内部应用的自建Id
     * @param userId      用户编号
     * @return 更新结果
     */
    Boolean updateUser(String accessToken, String userId);


    /**
     * @param accessToken 需要企业内部应用的自建Id
     * @param oldUserId   旧用户编号
     * @param newUserId   新用户编号
     * @return 更新结果
     */
    Boolean updateUser(String accessToken, String oldUserId, String newUserId);
}
